package com.biblioteca.dao;

import java.util.*;
import java.io.Serializable;


public interface GenericDao  <T, PK extends Serializable> extends Serializable{
	
    void update(T object);

    void remove(T object);
    
    void remove(Class<T> typeClass, PK clave);
    
    public int removeAll(Class<T> typeClass);
    
    void cerrar();

    public void insert(T t);

    List<T> getPaginated(Class<T> typeClass, int startPosition, int maxResult);

    List<T> getOrderedPaginated(Class<T> typeClass, int startPosition, int maxResult, String order, int dir);
    
    List<T> getAll(Class<T> typeClass);
	
    Integer countAll(Class<T> typeClass);

    T findByPK(Class<T> typeClass, PK id);
    
   // public T findByDNI(Class<T> typeClass, String criterio);
    
    public T  finByIsbn(Class<T> typeClass, String criterio);
    
    public T find(Class<T> typeClass, PK clave);
    
}
